login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A262222
Decimal representations of hexadecimal numbers that can be misinterpreted as decimal numbers in scientific E notation.
1
480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511
OFFSET
1,1
COMMENTS
Hexadecimal numbers containing no alpha digits other than a single "e", where the "e" is not the first or last digit (e.g., 3e12), may be misinterpreted as numbers in scientific E notation.
These numbers are especially troublesome when importing hexadecimal numbers from CSV files into Microsoft Excel.
These numbers can be written as 16^(i+1)a + 14*16^i + b where a and b are members of A102489 with a>0, b<16^i and i>0.
Numbers whose hexadecimal representation matches the regular expression [1-9][0-9]*e[0-9]+. - Eric M. Schmidt, Sep 28 2023
EXAMPLE
480_10 = 1e0_16 and 1e0 = 1 in E notation.
739_10 = 2e3_16 and 2e3 = 2000_10 in E notation.
PROG
(C++)
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n = 0; //integer to check
char hexRepresentation[12];
for (int i = 0; i < 100; ) //integers found (first 100)
{
sprintf(hexRepresentation, "%x", n); //get hex representation
char* foundE = strchr(hexRepresentation, 'e'); //look for letter e
if (foundE != NULL && //at least one e
hexRepresentation != foundE && //not the first digit
strpbrk(hexRepresentation, "abcdef") == foundE && //e is not first alpha
strlen(foundE) != 1 && //something after the e
strpbrk(foundE + sizeof(char), "abcdef") == NULL) //no alpha after the e
{
cout << n << "\n"; //output n
i++; //discovered an integer
}
n++; //check next value
}
}
(Python)
from itertools import count, product
# every string of d characters with exactly one 'e' in it, and all the other characters digits 0-9, in ascending lexicographic order
def mids(d):
if d<1:
raise Exception("d<1")
if d==1:
yield 'e'
return
for i in range(0, 10):
for m in mids(d-1):
yield str(i)+m
for i in range(10**(d-1)):
yield 'e'+str(i).zfill(d-1)
def a_generator():
for d in count(1):
for start in range(1, 10): # for each leading digit 1-9
for mid in mids(d): # for all possible middles made of d characters, containing exactly one 'e'
for end in range(10): #for each possible final digit, 0-9
s = '{}{}{}'.format(start, ''.join(mid), end)
i = int(s, 16)
yield i
a262222 = a_generator()
[next(a262222) for _ in range(48)] # Christian Perfect, Oct 20 2015
(C)
#include <stdbool.h>
#define DIGIT_E 14
bool isA262222(int k)
{
if (k <= 0 || k % 16 == DIGIT_E) return false;
bool foundE = false;
int digit;
while (k > 0) {
digit = k % 16;
if (digit == DIGIT_E) {
if (foundE) return false;
foundE = true;
}
else if (digit > 9) return false;
k /= 16;
}
return foundE && digit != DIGIT_E;
} // Eric M. Schmidt, Sep 28 2023
CROSSREFS
A subset of A102490.
Sequence in context: A323051 A025025 A108256 * A115157 A019287 A258551
KEYWORD
nonn,base
AUTHOR
Adam J.T. Partridge, Sep 16 2015
STATUS
approved